package config;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Configuration;

/**
 * Kafka配置
 * <pre>
 * 功能：添加动态配置属性，方便程序中使用${}读取
 * 
 * 场景：解决 @KafkaListener(topics = "注解参数必须是常量", groupId="注解参数必须是常量" ) 的问题
 * 
 * 实现：动态设置配置属性到System.Property（会被spring-boot优先读取），然后注解中通过${xx}读取配置属性
 * </pre>
 * @author 延晓磊
 *
 * @since 2018年8月30日
 */
@Configuration
public class KafkaConfiguration implements InitializingBean {

	/**
	 * 配置类加载完成事件
	 * 
	 * @throws Exception
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年8月30日
	 *
	 */
	@Override
	public void afterPropertiesSet() throws Exception {
		// 设置配置属性到System.property
		System.setProperty("IM_SERVER_TOPIC", "动态属性值");
		 
		// 消费者读取配置属性
		// @KafkaListener(topics = "${IM_SERVER_TOPIC}", groupId = "${IM_SERVER_TOPIC}")
	}

}
